The rendering of three-dimensional computer graphics is a computationally intensive process. In many high-end applications, three-dimensional computer graphics are rendered using a pool or cluster of computers, which share the processing responsibilities. In such a system, one computer may be configured to execute at least one application program and communicate graphics data to other computers for rendering. In this regard, a collection of computers may be configured to cooperatively render a graphics image and may receive the graphics data to be rendered from the computer executing the application program.
When multiple computers are used to render a single scene or image, the video signals generated by each of those computers are combined into a single aggregate (or composite) signal and encoded in a particular format, such as NTSC (National Television Standards Committee), PAL (phase alteration by line), etc. There exist devices called compositors that perform the function of combining (or compositing) multiple video signals into a single, composite video signal. Accordingly, there are known approaches for performing the functions of a compositor.
Referring to FIG. 1A, which illustrates an exemplary prior art system, in operation, a host or master computer 110 is configured to execute an application program 112, which generates three-dimensional graphics for presentation to a user. Program control, two-dimensional graphics and windows, user interface functions, and other aspects may be performed on the master or host computer 110. Three-dimensional graphics-rendering operations, however, are performed by a plurality (or cluster) of slave or render nodes 120 (only one render node shown). In such a system, a significant amount of data and other information is communicated from the host or master computer 110 to the render nodes 120 for rendering. As graphics scenes change, windows are moved or resized, or content within the windows is changed, additional communications occur between the host computer 110 and the various render nodes 120 in order to communicate changed information to the render nodes for rendering.
The three-dimensional graphics information is generally communicated to all render nodes 120, providing each render node 120 with state and other information on the other render nodes 120. This, however, consumes excessive bandwidth in the communication of information to all render nodes, as well as consumes excessive memory and processing resources at each render node.
Reference is now made to FIG. 1B, which is a diagram illustrating certain components in the multi-node graphics-rendering system of FIG. 1A. In such a system, application program 112 interacts with both a graphics library 114 and a two-dimensional graphics slave 116. As is known, a graphics-rendering application program often utilizes calls to standardized graphics functions that are maintained within a graphics library 114, and any such graphics calls are processed by the graphics library 114. A two-dimensional graphics slave 116 is also provided for managing the processing of two-dimensional graphics windows. When, however, the application program 112 calls for the rendering of three-dimensional graphics (which three-dimensional graphics are handled by the render nodes 120), any such instructions or graphics calls are routed through the two-dimensional graphics slave 116 to a three-dimensional graphics slave 122, which resides on the render nodes 120. In this respect, the two-dimensional graphics slave 116 acts as a conduit to forward three-dimensional graphics calls and instructions to the three-dimensional graphics slave 122 on the render nodes 120 for processing. A graphics library 124, similar to the graphics library 114, resides at the render node 120 for processing certain three-dimensional graphics calls. In addition, a graphics card (hardware) 125 is provided on each of the render nodes 120. An output of this card (such as a digital video interface) may be directed to a compositor, which is configured to collectively render a graphics display from independent graphics signals received from the various render nodes 120 and host node 110. Communication links or channels 135 and 136 are provided between the host 110 and render nodes 120 to accommodate communications there between.
In operation, an application program may define a number of graphics windows (both two-dimensional and three-dimensional) to be presented on a display. Programs or processes on the host 110 are configured to segregate three-dimensional graphics windows and identify those windows to the render nodes for handling. As the application program 112 (through user interaction or otherwise) calls for a reconfiguration of three-dimensional graphics windows (e.g., window moves, resizes, etc.) then logic provided on the host 110 determines the new configuration of the various three-dimensional graphics windows and communicates that new information to the plurality of render nodes. It should be appreciated that this requires significant resources on each of the render nodes, as well as significant bandwidth utilization through the communications between the host 110 and the plurality of render nodes 120.